package com.wonders.frame.common.util;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @author 顾乘瑞
 */
public class HumpUtil {
    private static Pattern linePattern = Pattern.compile("_(\\w)");

    /**
     * 下划线转驼峰
     * @param str
     * @return
     */
    public static String lineToHump(String str) {
        str = str.toLowerCase();
        Matcher matcher = linePattern.matcher(str);
        StringBuffer sb = new StringBuffer();
        while (matcher.find()) {
            matcher.appendReplacement(sb, matcher.group(1).toUpperCase());
        }
        matcher.appendTail(sb);
        return sb.toString();
    }

    /**
     * 首字母大写
     * @param str
     * @return
     */
    public static String initialsUpperCase(String str) {
        char[] ch = str.toCharArray();
        if (ch[0] >= 'a' && ch[0] <= 'z') {
            ch[0] = (char) (ch[0] - 32);
        }
        return new String(ch);
    }

    /**
     * 表名转类名
     * 首字母大写 + 下划线转驼峰
     * @param str
     * @return
     */
    public static String tableName2ClassName(String str){
        //去除表名开头的 t_ 和 T_
        if(str.startsWith("t_") || str.startsWith("T_")){
            str = str.replace("t_", "").replace("T_", "");
        }
        return initialsUpperCase(lineToHump(str));
    }
}
